function reloadCase(SpreadSheet,init,caselist)
tic
hWaitbar = waitbar(0,'Converting SpreadSheet to mat ......');

saveTcPath = [fileparts(SpreadSheet) '\AutoGen\TestCase'];
saveTcResultPath = [fileparts(SpreadSheet) '\AutoGen\Expected'];

load([saveTcPath '\temp.mat']);
% get initial value
if isempty(init)
	init = [];
end

% get init value from sheet 'Init'
[numeric, txt,initValue ] = xlsread(SpreadSheet,'Init');
if iscell(initValue)
	init = struct();
	waitbar(0,hWaitbar,'Loading initial value ......');
	nInitVars = size(initValue,1);
	for iInitVar = 1 : nInitVars
		waitbar(iInitVar/nInitVars);
		init.(initValue{iInitVar,1}) = [0 initValue{iInitVar,2}];
	end
end

% get sheets 
nCase = size(caselist,1);
isBCU = false;
for iCase = 1 : nCase
	waitbar(iCase/nCase,hWaitbar,[num2str(iCase) ' / ' num2str(nCase) ...
		' Reloading : ' caselist{iCase,1} ' ' caselist{iCase,2} ]);
	if iCase == 1
		% get all from spreadsheet
		[numeric, txt,data.(caselist{iCase,1}).txt] = xlsread(SpreadSheet,caselist{iCase,1});
	elseif ~strcmp(caselist{iCase,1},caselist{iCase-1,1})
		[numeric, txt,data.(caselist{iCase,1}).txt] = xlsread(SpreadSheet,caselist{iCase,1});
	end		
	
	% column 4 is test case number
	data.(caselist{iCase,1}).caselist = getcasenumber(data.(caselist{iCase,1}).txt(:,4));	
	% seperate testcase between HCU and BCU
	
	sampletime = data.(caselist{iCase,1}).txt{1,6};
	tcdata = data.(caselist{iCase,1}).txt;
	if strfind(sampletime,'0.01s')
		isBCU = true;
	end
	if strfind(sampletime,'ms')
		isBCU = true;
	end
	caseID = caselist{iCase,2};
	if isBCU
			[TC simTime]= handledata_BCU(caseID,tcdata,init);	
	else
			[TC simTime]= handledata_HCU(caseID,tcdata,init);	
	end
		
	% data.(sheetname).(case number)
	TC.simtime = simTime;
	if isnan(simTime)
		TC.simtime = inf;
	end
	data.(caselist{iCase,1}).(caseID).inVars  =	TC;		
	% get current case line number
	data.(caselist{iCase,1}).(caseID).caseRow = strmatch(caseID,tcdata(:,4));
	
	% get test expect
	if isBCU
		expected = handledataresultMIL_BCU(caseID,tcdata,init);
	else
		expected = handledataresultMIL_HCU(caseID,tcdata,init);
	end
	data.(caselist{iCase,1}).(caseID).expectResult  =	expected;

	% save test expect data to mat
	savename = [saveTcResultPath '\' caselist{iCase,1} '_' caseID '.mat'];
	save(savename,'expected','-mat','-v6');
	
	% save test data to mat
	savename = [saveTcPath '\' caselist{iCase,1} '_' caseID '.mat'];
	save(savename,'TC','-mat','-v6');
	savename = [saveTcPath '\temp.mat'];
	save(savename,'data','-mat','-v6');
	
end
delete(hWaitbar);
toc